package com.tanger.common.service;

import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.baomidou.mybatisplus.extension.service.IService;
import com.tanger.common.page.PageBean;
import com.tanger.common.page.PageList;
import com.tanger.common.page.QueryFilter;

import java.io.Serializable;
import java.util.List;

/**
 * 基础服务层
 */
public interface BaseService<T extends Model<T>> extends IService<T> {
	/**
	 * 通过主键查询实体
	 * @param id
	 * @return
	 */
	T get(Serializable id);
	/**
	 * 添加实体
	 * @param t
	 */
	void create(T t);
	/**
	 * 更新实体
	 * @param t
	 */
	void update(T t);
	/**
	 * 通过主键删除实体
	 * @param id
	 */
	void delete(Serializable id);
	/**
	 * 通过主键集合批量删除实体
	 * @param ids
	 */
	void deleteByIds(String... ids);
	/**
	 * 通用查询
	 * @param queryFilter
	 * @return
	 */
	PageList<T> findAllPage(QueryFilter<T> queryFilter);
	/**
	 * 无分页通用查询
	 * @param queryFilter
	 * @return
	 */
	List<T> findAll(QueryFilter<T> queryFilter);
	/**
	 * 无查询条件分页查询
	 * @param pageBean
	 * @return
	 */
	PageList<T> findAll(PageBean pageBean);
	/**
	 * 查询所有数据
	 * @return
	 */
	List<T> getAll();
}
